package bo;

import dao.AcaoGrupoDAO;
import java.util.ArrayList;
import java.util.List;
import model.AcaoGrupo;
import util.CustomException;

public class AcaoGrupoBO extends AbstractBO {

    private AcaoGrupoDAO acaoGrupoDAO = new AcaoGrupoDAO();

    public List<AcaoGrupo> selecionarTodos() throws CustomException {
        List<AcaoGrupo> acaoGrupoList = new ArrayList();
        try {
            beginTransaction();
            acaoGrupoList = acaoGrupoDAO.selecionarListaPorCriterio(getSession());
            commitTransaction();
        } catch (CustomException e) {
            rollbackTransaction();
            throw e;
        }
        return acaoGrupoList;
    }

    public AcaoGrupo selecionarPorId(Long usuCodigo) throws CustomException {
        AcaoGrupo acaoGrupo = null;
        try {
            beginTransaction();
            acaoGrupo = acaoGrupoDAO.selecionarPorId(getSession(), usuCodigo);
            commitTransaction();
        } catch (CustomException e) {
            rollbackTransaction();
            throw e;
        }
        return acaoGrupo;
    }

    public boolean possuiAcoes(long agrCodigo) throws CustomException {
        boolean result = false;
        try {
            beginTransaction();
            result = acaoGrupoDAO.possuiAcoes(getSession(), agrCodigo);
            commitTransaction();
        } catch (CustomException e) {
            rollbackTransaction();
            throw e;
        }
        return result;
    }

    public void salvar(AcaoGrupo acaoGrupo) throws CustomException {
        try {
            beginTransaction();
            if (acaoGrupo.getAgrCodigo() == 0) {
                acaoGrupo.setAgrCodigo(acaoGrupoDAO.selecionarProximoId(getSession()));
            }
            acaoGrupoDAO.salvar(getSession(), acaoGrupo);
            commitTransaction();
        } catch (CustomException e) {
            rollbackTransaction();
            throw e;
        }
    }

    public void excluir(AcaoGrupo acaoGrupo) throws CustomException {
        try {
            beginTransaction();
            acaoGrupoDAO.excluir(getSession(), acaoGrupo);
            commitTransaction();
        } catch (CustomException e) {
            rollbackTransaction();
            throw e;
        }
    }
}
